/*********************************************
This file is part of HIM.

HIM is a module of BCI++ framowork for the implementation of Brain Computer Interface systems.
HIM is intended for use with BCI++ only.

BCI++ is a project of the Sensibilab of Politecnico Di Milano

HIM is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as 
published by the Free Software Foundation, either version 3 of 
the License, or (at your option) any later version.

HIM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU General Public License
and the GNU Lesser General Public License along with HIM.  
If not, see <http://www.gnu.org/licenses/>.
*************************************************************/

/*!
\file	Algorithm.h

  \author	Luca Maggi luca.maggi@polimi.it
  
	\date	2008-02-09 creation \n
	2008-10-07 last modification
	
	  \b Org: 
	  SENSIBILAB - Politecnico di Milano
	  
	\b COPYRIGHT: 
	LGPL
		
	\class	BCIMatrix BCIMatrix.h
		  
	\brief	
	This class is and handfull wrapper for the c4mMatrix C struct. Data are stored in a bidimensional vector of float values
*/


#pragma once
#include ".\c4mdatatype.h"
class BCIMatrix :	public c4mMatrix
{
public:
/*! 
Constructs the object and allocates the space according to \a Rows and \a Cols.
\param Rows number of rows
\param Cols number of columns

*/
	BCIMatrix(int Rows,int Cols);
/*!
Zeroes the matrix
*/
	void	Zero(void);

/*!
Set \a Value in the position of the coordinates \a Row \a Col
\param Col		Column starting from 0
\param Row		Row starting from 0
\param Value	value to store
*/
	void	SetValue(unsigned int Row,unsigned int Col,float Value);

/*!
Get the value in the position of the coordinates \a Row \a Col
\param Col		Column starting from 0
\param Row		Row starting from 0
\return the value of the element
*/
	float	GetValue(unsigned int Row,unsigned int Col);

/*! \fn 		~BCIMatrix(void)
Destroy the object and deallocates the memory
*/
	~BCIMatrix(void);

/*! 
float* pointer to the data for storage
*/
	float*	pFloat;
};

